int initACInstance(int streamId, unsigned char* pubBytes, int pubLen, int policyId, unsigned char* tkBytes, int tkLen, unsigned char *detK2, int detK2Len);

int transform_simple(unsigned char* cipher, int cipherLen, int streamId, int policyId, unsigned char** result,
int* len);

int transform_join(unsigned char* cipher, int userId, int cipherLen, unsigned char **transformedCipher, int
*transformedCipherLen);

int transform_join(int streamId, int userId, unsigned char *cipher, int cipherLen, element_t cph); 

int multiplyCiphers(unsigned char** ciphers, int size, int streamId, unsigned char** result, int* len);

int divideCiphers(int streamId, unsigned char** cipher1, unsigned char** cipher2, unsigned char** result, int *len); 

bool check_joining_cond(element_t cipher1, element_t key1, unsigned char* cipher2, element_t
key2);
